import Vue from 'vue'
import App from './App.vue'
import router from './router'
import axios from 'axios'
import moment from 'moment'

// --------------------------------------------------------------------------------

// 引入Element ul组件库
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

// 导入公共样式base.less
import './style/base.less'

// 引入富文本组件库
import VueQuillEditor from 'vue-quill-editor'

import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'

// --------------------------------------------------------------------------------

// 1.如果一个工具函数，可以在所以的组件中都可以用，可以挂载到原型上
Vue.prototype.$axios = axios

// 2.配置baseURL基准地址
axios.defaults.baseURL = 'http://localhost:8888/api/private/v1/'

// 3.配置请求拦截器: 将每次的请求, 进行拦截, 可以对每次的请求进行处理
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  config.headers.Authorization = localStorage.getItem('token')
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 4.添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  response = response.data
  // 登录token 失效，直接拦截在登录页
  if (response.meta.status === 401) {
    // 清楚token
    localStorage.removeItem('token')
    // 订制提示文本
    response.meta.msg = '登录过期，请重新登录'
    // 拦截到登录页
    router.push('./login')
  }
  return response
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error)
})

// --------------------------------------------------------------------------------

// 定义时间过滤器
Vue.filter('time', function (input) {
  // 获取到的是秒，转成毫秒
  return moment(input * 1000).format('YYYY-MM-DD HH:mm:ss')
})

// --------------------------------------------------------------------------------

// 只要是基于vue的插件, 一律需要先Vue.use一下才能用
Vue.use(ElementUI)

Vue.use(VueQuillEditor)

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
